package com.bupt.kgplatform.component;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import java.util.HashMap;
import java.util.Map;

public class DynamicDataSource extends AbstractRoutingDataSource {
    //用于存储已实例的数据源map
    private static final Map<Object,Object> dataSourceMap=new HashMap<Object, Object>();
    //flag是用来控制非mysql情况的，暂不考虑
//    private boolean flag;
//
//    public void setFlag(boolean flag) {
//        this.flag = flag;
//    }

    /**
     * 设置数据源
     * @param targetDataSources
     */

    @Override
    public void setTargetDataSources(Map<Object, Object> targetDataSources) {
        super.setTargetDataSources(targetDataSources);
        dataSourceMap.putAll(targetDataSources);
        super.afterPropertiesSet(); // 必须添加该句，否则新添加数据源无法识别到
    }


    /**
     * 获取已存储实例的数据源map
     * @return
     */
    public Map<Object, Object> getDataSourceMap() {
        return dataSourceMap;
    }


    /**
     * 是否存在当前key的 DataSource
     * @param key
     * @return 存在返回 true, 不存在返回 false
     */
    public static boolean isExistDataSource(String key) {
        return dataSourceMap.containsKey(key);
    }

    //制空 应该不用holder了，每次手动显示设置DataBaseUtil类，由DataBaseUtil类来和数据库打交道
    @Override
    protected Object determineCurrentLookupKey() {
        return null;
    }
}
